package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorDemo {
    public static void main(String[] args) {
        Collection c=new ArrayList();
        c.add("ONE");
        c.add("#");
        c.add("TWO");
        c.add("#");
        c.add("THREE");
        c.add("#");
        c.add("FOUR");
        c.add("FIVE");
        System.out.println(c);
        //获取迭代器
        Iterator it=c.iterator();
        /*
        *  boolean hasNext（）
        *  判断集合是否还有”下一个“元素可以遍历。迭代器得起始位置可以理解为是集合第一个
        * 元素位置之前。因此第一次调用hasNext()就是判断集合是否第一个元素
        * E next（）
        * 获取集合种”第一个“元素。获取迭代器得位置会向后移动一个元素位置
        * */
        while(it.hasNext()){
            String e=(String)it.next();
            System.out.println(e);
            if("#".equals(e)){
                /*
                迭代器在遍历得过程中不能通过集合得方法增删元素，否则迭代器会抛出
                并发修改异常：
                java.util.ConcurrentModificationException
                 */
                /*c.remove(e);*/
                /**
                 * 迭代器提供了remove方法可以将本次通过next方法获取得元素从集合中删除。
                 */
                it.remove();
            }
        }
        System.out.println(c);
    }
}
